import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import 'font-awesome/css/font-awesome.css'

Vue.config.productionTip = false


// size:small 全局处理
Vue.use(ElementUI,{size:'small'});

// 全局定义请求方式。好处：不需要每个vue页面都导入请求
import {postRequest,getRequest,putRequest,deleteRequest} from "@/utils/api";
import {initMenu} from "@/utils/menus";
import {downloadRequest} from "@/utils/download";
Vue.prototype.postRequest = postRequest;
Vue.prototype.getRequest = getRequest;
Vue.prototype.putRequest = putRequest;
Vue.prototype.deleteRequest = deleteRequest;
//文件下载请求
Vue.prototype.downloadRequest = downloadRequest;


// 路由前置守卫
router.beforeEach((to, from, next) => {
  // to / from 显示的都是router信息
  // to : 将要到的地方
  // from : 从什么地方来
  // next() : 进行from-to的操作，如果没有这个，则不会到to
  // 如果登录了，就初始化菜单
  if (window.sessionStorage.getItem("token")) {
      initMenu(router,store);
      // 判断是否有用户信息
    if (!window.sessionStorage.getItem('user')) {
        return getRequest('/admin/info').then(resp => {
          if (resp) {
            // sessionStorage存储字符串。存入用户信息
            window.sessionStorage.setItem('user',JSON.stringify(resp));
            next();
          }
        })
    }
      next();
  }else {
    // 如果到登录页就放行
    if (to.path === '/') {
      next();
    }else {
      // 如果页面直接输入菜单路径，会直接重定向到登录页，登录成功之后跳转到输入的菜单路径
      next('/?redirect=' + to.path)
    }
  }
})



new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')
